package pattern.structure.adapter;

/**
 * @author : Rookie
 * @description : 将一个类的接口转换成客户端所期望的另一种接口。适配器模式使得原本因接口不兼容而不能一起工作的类可以协同工作。
 * * 它通过将一个类的方法包装成另一个类所期望的接口，实现了两个不同接口之间的互操作。
 * @date : 2023/8/13
 */
class AdapterPattern {

    public static void main(String[] args) {
        AmericanPower americanPower = new AmericanPower();
        PowerAdapter powerAdapter = new PowerAdapter(americanPower);
        powerAdapter.chargeWithChinesePower();
    }
}

// 目标接口
interface ChinesePower {

    void chargeWithChinesePower();
}

// 适配者类 美国电源
class AmericanPower {
    void chargeWithAmericanPower() {
        System.out.println("使用美国电源给设备充电");
    }
}

// 适配器类
class PowerAdapter implements ChinesePower {

    private final AmericanPower americanPower;

    public PowerAdapter(AmericanPower americanPower) {
        this.americanPower = americanPower;
    }

    @Override
    public void chargeWithChinesePower() {
        System.out.println("将美国电源适配为中国电源");
        americanPower.chargeWithAmericanPower();
    }
}
